home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / GCC 1.37.1r14 / usr / gcc-1.37.1r14 / (gcc-1.37.π) / reload.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-01  |  2.3 KB  |  74 lines  |  [TEXT/KAHL]

  1. /* Communication between reload.c and reload1.c.
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.    Copyright (C) 1989, 1990 Apple Computer, Inc.
  4.  
  5. This file is part of GNU CC.
  6.  
  7. GNU CC is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 1, or (at your option)
  10. any later version.
  11.  
  12. GNU CC is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with GNU CC; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21.  
  22. /* See reload.c and reload1.c for comments on these variables.  */
  23.  
  24. /* Maximum number of reloads we can need.  */
  25. #define MAX_RELOADS (2 * MAX_RECOG_OPERANDS * (MAX_REGS_PER_ADDRESS + 1))
  26.  
  27. extern rtx reload_in[MAX_RELOADS];
  28. extern rtx reload_out[MAX_RELOADS];
  29. extern rtx reload_in_reg[MAX_RELOADS];
  30. extern enum reg_class reload_reg_class[MAX_RELOADS];
  31. extern enum machine_mode reload_inmode[MAX_RELOADS];
  32. extern enum machine_mode reload_outmode[MAX_RELOADS];
  33. extern char reload_strict_low[MAX_RELOADS];
  34. extern char reload_optional[MAX_RELOADS];
  35. extern int reload_inc[MAX_RELOADS];
  36. extern int reload_needed_for_multiple[MAX_RELOADS];
  37. extern rtx reload_needed_for[MAX_RELOADS];
  38. extern int n_reloads;
  39.  
  40. extern rtx reload_reg_rtx[MAX_RELOADS];
  41.  
  42. enum reload_when_needed
  43. {
  44.   RELOAD_FOR_INPUT_RELOAD_ADDRESS,
  45.   RELOAD_FOR_OUTPUT_RELOAD_ADDRESS,
  46.   RELOAD_FOR_OPERAND_ADDRESS,
  47.   RELOAD_OTHER
  48. #ifdef MPW_C31
  49.   , r_w_n_intifier = 1000000
  50. #endif /* MPW_C31 */
  51. };
  52.  
  53. extern enum reload_when_needed reload_when_needed[MAX_RELOADS];
  54.  
  55. extern rtx *reg_equiv_constant;
  56. extern rtx *reg_equiv_address;
  57. extern rtx *reg_equiv_mem;
  58.  
  59. /* All the "earlyclobber" operands of the current insn
  60.    are recorded here.  */
  61. extern int n_earlyclobbers;
  62. extern rtx reload_earlyclobbers[MAX_RECOG_OPERANDS];
  63.  
  64. /* First uid used by insns created by reload in this function.
  65.    Used in find_equiv_reg.  */
  66. extern int reload_first_uid;
  67.  
  68. /* Nonzero if an address (plus (reg frame_pointer) (reg ...)) is valid.  */
  69. extern char double_reg_address_ok;
  70.  
  71. void init_reload ();
  72. void find_reloads ();
  73. void subst_reloads ();
  74.